package ooday05;

public class StaticMethod {
    public static void main(String[] args) {
        System.out.println(plus(1, 2));
        StaticMethod.test();
        StaticMethod staticMethod = new StaticMethod();
        staticMethod.say();
    }

    int a;//实例变量，对象来访问
    static int b;//静态变量，通过类名来访问，共享变量

    void show() {//有隐式的this
        System.out.println(this.a);
        System.out.println(StaticMethod.b);
    }

    //在say（）中需要访问对象的属性a，所以认为say的操作与对象有关，不适合设计为静态方法
    void say() {
        System.out.println(a);
    }

    //在plus（）中不需要访问对象的属性/行为，所以认为plus的操作与对象无关，可以设计为静态方法
    static int plus(int num1, int num2) {
        return num1 + num2;
    }

    static void test() {//无隐式的this
        /*
        静态方法中无隐式的this传递
        没有this就意味着没有对象
        而实例变量a必须通过对象来访问
        所以不new对象而直接输出a会编译错误
        例如
        System.out.println(a);
         */
        StaticMethod s = new StaticMethod();//创建类的实例来访问
        System.out.println(s.a);
        System.out.println(b);
    }
}
